package com.example.activiti6_demo.mapper;

import org.activiti.engine.impl.persistence.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @des: 回退流程
 * @Author: mengxiangzhong
 * @Date:
 **/

@Mapper
public interface ActRetMapper {

    /**
     * 新增执行器
     * @param executionEntity
     * @return
     */
    int insertExecution(ExecutionEntityImpl executionEntity);

    /**
     * 新增运行任务
     * @param taskEntity
     * @return
     */
    int insertTask(TaskEntityImpl taskEntity);

    /**
     * 查询用户管理
      * @param pid
     * @param taskId
     * @return
     */
    List<HistoricIdentityLinkEntityImpl> selectHistoricIdentityLinksByProcessInstanceAndTaskId(@Param("pid") String pid,
                                                                                               @Param("taskId") String taskId);

    /**
     * 插入用户信息
     * @return
     */
    int insertIdentityLink(IdentityLinkEntityImpl identityLinkEntity);

    /**
     * 插入变量
     * @param list
     * @return
     */
    int bulkInsertVariableInstance(List<VariableInstanceEntity> list);

    /**
     * 变更结束的最后的流程
     * @return
     */
    int updateHistoricTaskInstance(HistoricTaskInstanceEntityImpl historicTaskInstanceEntity);

    /**
     * 根据id删除历史实例
     * @param taskIdList
     * @return
     */
    int deleteHistoricTask(List<String> taskIdList);

    /**
     * 删除历史节点操作表
     * @param actIdList
     * @return
     */
    int deleteHistoricAct(List<String> actIdList);

    /**
     * 重置历史节点表的部分数据
     * @param id
     * @return
     */
    int resetHistoricAct(String id);

    /**
     * 禁用Mysql外键约束
     */
    void  stopMysqlFerKey();

    /**
     * 启用Mysql外键约束
     */
    void  startMysqlFerkey();

    /**
     * 禁用PgSql外键约束
     */
    void  stopPgsqlFerKey();

    /**
     * 启用PgSql外键约束
     */
    void  startPgsqlFerkey();
}
